package com.github.icloudpay.pay.core.modules.reconciliation;

/**
 * http://www.cnblogs.com/duanxz/p/9204367.html
 * 对账模块
 *      * 开始对账
 *      *
 *      * 对账核心系统
 *      * 对账主流程：
 *      *
 *      * 1：加载对账左方的标准账单，以订单号为key，订单金额等其他信息为value，存储至Redis的Map对象中；加载所有订单号存储至Redis的Set对象中
 *      *
 *      * 2：加载对账右方的标准账单，以订单号为key，订单金额等其他信息为value，存储至Redis的Map对象中；加载所有订单号存储至Redis的Set对象中
 *      *
 *      * 3：加载历史差异数据，以订单号为key，订单金额等其他信息为value，存储至Redis的Map对象中；加载所有订单号存储至Redis的Set对象中
 *      *
 *      * 4：对比对账左方和对账右方的订单总金额、总笔数
 *      *
 *      * 5：获得对账结果，插入对账结果
 *      *
 *      * 6：异步调用明细对账流程
 *      *
 *      * 7：主流程结束
 *      *
 *      * 明细对账流程：
 *      *
 *      * 1：利用Redis的Set集合对象，取交集；获得订单号一致的数据集合
 *      *
 *      * 2：利用Redis的Set集合对象，取差集；获得订单号不一致的数据集合
 *      *
 *      * 3：订单号一致的数据集合，取Redis中对应的Map对象中的订单信息，对比订单的金额是否一致。若一致，则账平；否则为差异，差异类型：金额不一致
 *      *
 *      * 4：订单号不一致的数据集合，与历史差异数据集合再次进行取交集操作，获得订单号一致的数据集合和订单号不一致的数据集合
 *      *
 *      * 5：订单号一致的数据集合，取Redis中对应的Map对象中的订单信息，对比订单的金额是否一致。若一致，则账平，类型为日切差账平；否则为差异，不做更新操作
 *      *
 *      * 6：订单号不一致的数据集合，判断是否新增差异。若为新增差异，则差异类型为：左有右无、左无右有
 *      *
 *      * 7：根据明细对账的最终结果，更新对账结果数据
 *      *
 *      * 8：将差异数据信息发送MQ消息，进入差错处理流程
 */
